// Package day_02_mid_sort helan_flag
// @Title day_02_mid_sort
// @Description  荷兰国旗问题
// @Author  == 琳琳也叫王木木 ==  2021/8/30 17:16
// @Create  2021/8/30 17:16
package day_02_mid_sort

/**
给定一个数组，和一个目标值，要求实现将数组左边恒定小于等于目标值，右边大于目标值
*/

func HelanArr1(nums []int, tag int) []int {
	var firLarge = -1 // 记录第一个比tag大元素的下标 一开始是-1 表示不存在
	for i := 0; i < len(nums); i++ {
		if nums[i] <= tag {
			if firLarge != i-1 {
				// 下移 并且交换位置
				nums[i], nums[firLarge+1] = nums[firLarge+1], nums[i]
			}
			firLarge++
		}
	}
	return nums
}
